<?php
//命名空间为公共组件类
namespace Admin\Components;
//定义最终的分页类
final class Pager
{
	//私有的分页参数
	private $page; //当前页
	private $pages; //总页数

	//公共的构造方法
	public function __construct($page, $pages)
	{
		$this->page = $page;
		$this->pages = $pages;
	}

	//公共的分页方法
	public function fenye($where)
	{
		if (!empty($where['category_id']))   //如果点击了分类链接，传值进来，动态生成分页的链接
		{
			$ci = $where['category_id'];
			$back = '&ci=' . $ci;    //前一页
			$forward = '&ci=' . $ci;  //后一页
			$now = '&ci=' . $ci;   //点击页
		} else {
			$back = '';
			$forward = '';
			$now = '';
		}
		$str .= "<div class='text-center' style='align:center'>
			  <ul class='pagination'>";
		//前一页，判断当前页如果是页码为1，则前一页不可点击，不指定文件代表当前文件
		if ($this->page > 1) {

			$str .= " <li><a  href=?m=admin&c=goods&a=index&page=" . ($this->page - 1) . $back . ">&laquo;</a></li> ";
		} else {
			$str .= " <li class='disabled'><a>&laquo;</a></li> ";
		}

		//定义循环开始和结束，因为只展示四页，所以我这样设定
		$start = $this->page - 1;
		$end = $this->page + 2;
		//对页码溢出的处理，下限溢出处理
		if ($this->page < 2) {
			$start = 1;
			$end = 4;
		}
		//上限溢出处理
		else if ($this->page > $this->pages - 2) {
			$start = $this->pages - 3;
			$end = $this->pages;
		}
		//这时判断总页码数是否小于限定展示页码数，如果小于则要进行处理
		if ($this->pages < 4 && $this->pages > 0) {
			//那么就是循环开始为1，循环结束为总页码数
			$start = 1;
			$end = $this->pages;
		}

		//还要判断是否有数据的情况,如果是空页码直接不显示了
		if (!empty($this->pages)) {
			//限定分页循环
			for ($i = $start; $i <= $end; $i++) {
				if ($i == $this->page) {
					$str .= "<li class='active'><a>$i</a></li>";
				} else {
					$str .= "<li><a href=?m=admin&c=goods&a=index&page=$i" . $now . ">$i</a></li>";
				}
			}
		}

		//下一页，并判断如果当前页等于最大总页数，下一页不可点击
		if ($this->page < $this->pages) {
			$str .= " <li><a href=?m=admin&c=goods&a=index&page=" . ($this->page + 1) . $forward . ">&raquo;</a></li> ";
		} else {
			$str .= " <li class='disabled'><a>&raquo;</a></li> ";
		}
		$str .= "</ul>";
		$str .= "</div>";
		return $str;
	}
}
